#! /bin/bash

sudo modprobe option
sudo sh -c 'echo "2c7c 0901" > /sys/bus/usb-serial/drivers/option1/new_id'

echo "配置usb驱动成功"


#运行步骤变量初始化
ec20_step=0

#超时计数初始化
over_time=0

#循环
while [ 1 ]
do
#第一步先检查驱动
	if [ $ec20_step -eq 0 ]; then
	#使用lsusb查看是否有ec20驱动 grep查询结果是否包含Quectel
			result=$(lsusb | grep Quectel)
			if [[ $result =~ "2c7c:0901" ]]; then
					ec20_step=1
					echo "第一步完成"
			else
					ec20_step=0
			fi
			#延时2s
			sleep 2
			
#第二步 开始拨号
	elif [ $ec20_step -eq 1 ]; then
			cd  /etc/ppp/
            sudo pppd call rasppp
			ec20_step=2

			sleep 2
			echo "第二步完成"
#第三步 查询路由是否包含ppp0网卡，拨号成功则会包含有ppp0网卡
	elif [ $ec20_step -eq 2 ]; then
			result=$(route -n | grep ppp0)
			if [[ $result =~ "ppp0" ]]; then
					#若包含网卡，则添加默认路由
					#echo "raspberry" | 
                    sudo route add default dev ppp0
					ec20_step=3
					over_time=0
					echo "第三步完成"
			else
				#超时计数
					let over_time++
			fi
			#若一分钟都没有路由网卡则说明没有拨号成功
			if [ $over_time -eq 12 ]; then
					over_time=0
					#超时拨号则跳入重启步骤
					ec20_step=4
			fi

			sleep 5
			
#第四步 通过ping命令检查网络状态
	elif [ $ec20_step -eq 3 ]; then
			result=$(ping -I ppp0 -c 1 baidu.com)
			if [[ $result =~ "1 received" ]]; then
					over_time=0
					echo "第四步完成"
					exit 0
			else
					#
					let over_time++

			fi
			#超时则杀掉拨号线程，并进入重启步骤
			if [ $over_time -eq 6 ]; then
					over_time=0
					ec20_step=4
					#echo "raspberry" | sudo pkill wvdial
			fi
			sleep 5
			

#第五步重启模块
	elif [ $ec20_step -eq 4 ]; then
			echo -e "AT+CFUN=1,1\r\n" > /dev/ttyUSB0
			ec20_step=0
			#重启命令后延时稍微长一点
			sleep 15
	fi

done
exit 0

